<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>jQuery解绑事件off()</title>
    <script src="../jquery/jquery.v3.7.1.js"></script>
    <style>
        .box {
            width: 200px;
            height: 200px;
            background-color: pink;
        }
    </style>
</head>

<body>
    <div>
        <p>事件处理之解绑事件：</p>
        <p>off() 方法可以移除通过 on() 方法添加的事件处理程序。</p>
        <p>1、$('ul').off(): 解除 ul元素上的所有事件处理程序。</p>
        <p>2、$('ul').off('click'): 解除 ul元素上的 click事件处理程序。</p>
        <p>3、$('ul').off('click','li'): 解除事件委托。</p>

        <p>如果想要添加的事件只执行一次，可以使用 one() 方法添加事件。</p>
        <p>one() 方法跟 on() 方法一样，但 one() 方法只执行一次后就不再执行。</p>
        <p>语法：$('p').one('click',fn)</p>
    </div>
    <div>
        <div class="box"></div>
        <ul></ul>
    </div>
    <script>
        $(function () {
            // 动态元素绑定事件
            $('.box').on({
                mouseover: function () {
                    var li = $('<li>哎~ 我进来啦~</li>');
                    $('ul').append(li)
                },
                mouseout:function(){
                    var li = $('<li>哎~ 我又出来啦~</li>');
                    $('ul').append(li)
                }
            })
            // 事件委托
            $('.box').parent().on('click','.box',function(){
                alert('事件委托')
            })
            // off() 移除由 on()方法添加的事件
            //解除单个事件
            // $('.box').off('mouseover');
            //解除多个事件
            // $('.box').off('mouseover mouseout');
            //解除所有事件
            $('.box').off();

            //解除事件委托
            // $('.box').parent().off('click','.box');

            // one() 方法添加一次性事件
            $('.box').one('click',function(){
                $('.box').css('background-color','green');
            })
        })
    </script>
</body>

</html>